package com.eve.eplus.common.tools;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import com.eve.eplus.common.app.Configuration;
import com.eve.eplus.common.tools.ConfigurationTools;

/**
 * 配置管理工具
 * @author  Norsie
 * @created 12-12-17
 */
public class ConfigurationTools {
 
    /** 配置文件名称 **/
    public static final String  CONFIG_FILENAME = Configuration.CONFIG_FILENAME; 
      
    SharedPreferences mSharePreference = null;
    
    static ConfigurationTools mInstance = null;

    public static ConfigurationTools getInstance(Context context) {

        if (mInstance == null) {
            mInstance = new ConfigurationTools(context);
        }
        return mInstance;
    }

    private ConfigurationTools(Context context) {
        mSharePreference = context.getSharedPreferences(CONFIG_FILENAME, 0);
    }
    
    
    /** 
     * 获取配置中名称为itemName项的数值，如果配置中没有该项目，返回为空。
     * @param itemName 项目名称
     * @return 获取的数据值
     */
    public String getString(String itemName) {   
        return mSharePreference.getString(itemName, "");
    }
    
    /** 
     * 获取配置中名称为itemName项的数值，如果配置中没有该项目，返回默认值。
     * @param itemName 项目名称
     * @param defultValue 默认值
     * @return 获取的数据值
     */
    public String getString(String itemName,String defultValue) {    
        return mSharePreference.getString(itemName, defultValue);
    }

    
    /** 
     * 设置配置项的值,如果配置项没有，就新增一条配置信息，否则修改原有配置信息。
     * @param itemName 配置项名称
     * @param value 配置项数值
     * @return 设置是否成功
     */
    public boolean putString(String itemName, String value) {
        
        Editor editor = mSharePreference.edit();
        editor.putString(itemName, value);
        return editor.commit();
    }
    

    /** 
     * 获取配置中名称为itemName项的数值，如果配置中没有该itemName，返回为-1
     * @param itemName 配置项名称
     * @return 获取的数据值
     */
    public int getInt(String itemName) {     
        return mSharePreference.getInt(itemName, -1);
    }

    
    /** 
     * 设置配置项的值,如果配置项没有，就新增一条配置信息，否则修改原有配置信息。
     * @param itemName 配置项名称
     * @param value 配置项数值
     * @return 设置是否成功
     */
    public boolean putInt(String itemName, int value) {
        
        Editor editor = mSharePreference.edit();
        editor.putInt(itemName, value);
        return editor.commit();
    }
    
    /** 
     * 获取配置中名称为itemName项的数值，如果配置中没有该项目，返回为空。
     * @param itemName 项目名称
     * @return 获取的数据值
     */
    public Long getLong(String itemName) {   
        return mSharePreference.getLong(itemName,0);
    }
    
    /** 
     * 获取配置中名称为itemName项的数值，如果配置中没有该项目，返回默认值。
     * @param itemName 项目名称
     * @param defultValue 默认值
     * @return 获取的数据值
     */
    public Long getLong(String itemName,long defultValue) {    
        return mSharePreference.getLong(itemName, defultValue);
    }

    
    /** 
     * 设置配置项的值,如果配置项没有，就新增一条配置信息，否则修改原有配置信息。
     * @param itemName 配置项名称
     * @param value 配置项数值
     * @return 设置是否成功
     */
    public boolean putLong(String itemName, long value) {
        
        Editor editor = mSharePreference.edit();
        editor.putLong(itemName, value);
        return editor.commit();
    }
}
